import axios from 'axios'
import store from '../store'
import { Message } from 'element-ui';
import { Loading } from 'element-ui';

const CancelToken = axios.CancelToken
var cancel;
var service=axios.create({
  baseURL: `${window.location.protocol}//${window.location.host}`,
  changeOrigin: true,
  timeout: 15000,
  headers: { 'Content-Type': 'application/json;charset=utf-8' }
})
 //添加请求拦截器
 service.interceptors.request.use(function(config){
  if(store.getters.token){
    config.headers['TOKEN']=getCookie('TOKEN')
  }
  return config
},function(error){
  return Promise.reject(error)
})
//添加响应拦截器
service.interceptors.response.use(function(response){
   /**
   * 下面的注释为通过在response里，自定义code来标示请求状态
   * 当code返回如下情况则说明权限有问题，登出并返回到登录页
   * 如想通过xmlhttprequest来状态码标识 逻辑可写在下面error中
   */
  // response => {
  //   const res = response.data
  //   if (res.code !== 20000) {
  //     })
  //     // 50008:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;
  //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
  //       }).then(() => {
  //         })
  //       })
  //     }
  //     return Promise.reject('error')
  //   } else {
  //     return response.data
  //   }
  // },
  return response
},function(error){
  console.log('err'+error)
  Message({
    message:error.message,
    type:'error'
  })
  return Promise.reject(error)
}
)
export default{
  //get请求
  get(url,data){
    return new Promise((resolve,reject)=>{
      //数据加载遮罩层动画
      let options = {
        target: document.querySelector('.mainContent'),
        text: '拼命加载中。。。',
        background: 'rgba(0, 0, 0, 0.8)',
        spinner: "el-icon-loading"
      };
      let loadingInstance = Loading.service(options);
      //loadingInstance.close();
      service({
        method:'get',
        url,
        params:data,
        cancelToken:new CancelToken(c=>{
          cancel=c
        })
      }).then(res=>{  //axios返回的是一个promise对象
        resolve(res)  //resolve在promise执行器内部
        loadingInstance.close();
      }).catch(err=>{
        console.log(err,'异常')
      })
    })
  },
  //post请求
  post(url,data){
    return new Promise((resolve,reject)=>{
      service({
        method:'post',
        url,
        data:data,
        cancelToken:new CancelToken(c=>{
          cancel=c
        })
      }).then(res=>{
        resolve(res)
      }).catch(err=>{
        console.log(err,'异常')
      })
    })
  }
}